home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / telephony.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  9KB  |  269 lines

  1. /******************************************************************************
  2.  *
  3.  *        telephony.h
  4.  *
  5.  *        Basic Linux Telephony Interface
  6.  *
  7.  *        (c) Copyright 1999-2001 Quicknet Technologies, Inc.
  8.  *
  9.  *        This program is free software; you can redistribute it and/or
  10.  *        modify it under the terms of the GNU General Public License
  11.  *        as published by the Free Software Foundation; either version
  12.  *        2 of the License, or (at your option) any later version.
  13.  *
  14.  *    Authors:       Ed Okerson, <eokerson@quicknet.net>
  15.  *                   Greg Herlein, <gherlein@quicknet.net>
  16.  *
  17.  *    Contributors:  Alan Cox, <alan@redhat.com>
  18.  *                   David W. Erhart, <derhart@quicknet.net>
  19.  *
  20.  * IN NO EVENT SHALL QUICKNET TECHNOLOGIES, INC. BE LIABLE TO ANY PARTY FOR
  21.  * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
  22.  * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF QUICKNET
  23.  * TECHNOLOGIES, INC. HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  24.  *
  25.  * QUICKNET TECHNOLOGIES, INC. SPECIFICALLY DISCLAIMS ANY WARRANTIES,
  26.  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
  27.  * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
  28.  * ON AN "AS IS" BASIS, AND QUICKNET TECHNOLOGIES, INC. HAS NO OBLIGATION
  29.  * TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
  30.  *
  31.  * Version:       $Revision: 4.2 $
  32.  *
  33.  * $Id: telephony.h,v 4.2 2001/08/06 07:09:43 craigs Exp $
  34.  *
  35.  *****************************************************************************/
  36.  
  37. #ifndef TELEPHONY_H
  38. #define TELEPHONY_H
  39.  
  40. #include <linux/compiler.h>
  41.  
  42. #define TELEPHONY_VERSION 3013
  43.  
  44. #define PHONE_VENDOR_IXJ          1
  45. #define PHONE_VENDOR_QUICKNET      PHONE_VENDOR_IXJ
  46. #define PHONE_VENDOR_VOICETRONIX  2
  47. #define PHONE_VENDOR_ACULAB       3
  48. #define PHONE_VENDOR_DIGI         4
  49. #define PHONE_VENDOR_FRANKLIN     5
  50.  
  51. /******************************************************************************
  52.  *  Vendor Summary Information Area
  53.  *
  54.  *  Quicknet Technologies, Inc. - makes low density analog telephony cards
  55.  *    with audio compression, POTS and PSTN interfaces (www.quicknet.net)
  56.  *
  57.  *  (other vendors following this API shuld add a short description of
  58.  *  the telephony products they support under Linux)
  59.  *
  60.  *****************************************************************************/
  61. #define QTI_PHONEJACK        100
  62. #define QTI_LINEJACK        300
  63. #define QTI_PHONEJACK_LITE    400
  64. #define QTI_PHONEJACK_PCI    500
  65. #define QTI_PHONECARD        600
  66.  
  67. /******************************************************************************
  68. *
  69. * The capabilities ioctls can inform you of the capabilities of each phone
  70. * device installed in your system.  The PHONECTL_CAPABILITIES ioctl
  71. * returns an integer value indicating the number of capabilities the   
  72. * device has.  The PHONECTL_CAPABILITIES_LIST will fill an array of 
  73. * capability structs with all of its capabilities.  The
  74. * PHONECTL_CAPABILITIES_CHECK takes a single capability struct and returns
  75. * a TRUE if the device has that capability, otherwise it returns false.
  76. ******************************************************************************/
  77. typedef enum {
  78.     vendor = 0,
  79.     device,
  80.     port,
  81.     codec,
  82.     dsp
  83. } phone_cap;
  84.  
  85. struct phone_capability {
  86.     char desc[80];
  87.     phone_cap captype;
  88.     int cap;
  89.     int handle;
  90. };
  91.  
  92. typedef enum {
  93.     pots = 0,
  94.     pstn,
  95.     handset,
  96.     speaker
  97. } phone_ports;
  98.  
  99. #define PHONE_CAPABILITIES              _IO  ('q', 0x80)
  100. #define PHONE_CAPABILITIES_LIST         _IOR ('q', 0x81, struct phone_capability *)
  101. #define PHONE_CAPABILITIES_CHECK        _IOW ('q', 0x82, struct phone_capability *)
  102.  
  103. typedef struct {
  104.         char month[3];
  105.         char day[3];
  106.         char hour[3];
  107.         char min[3];
  108.         int numlen;
  109.         char number[11];
  110.         int namelen;
  111.         char name[80];
  112. } PHONE_CID;
  113.  
  114. #define PHONE_RING            _IO  ('q', 0x83)
  115. #define PHONE_HOOKSTATE            _IO  ('q', 0x84)
  116. #define PHONE_MAXRINGS            _IOW ('q', 0x85, char)
  117. #define PHONE_RING_CADENCE        _IOW ('q', 0x86, short)
  118. #define OLD_PHONE_RING_START            _IO  ('q', 0x87)
  119. #define PHONE_RING_START        _IOW ('q', 0x87, PHONE_CID *)
  120. #define PHONE_RING_STOP            _IO  ('q', 0x88)
  121.  
  122. #define USA_RING_CADENCE     0xC0C0
  123.  
  124. #define PHONE_REC_CODEC            _IOW ('q', 0x89, int)
  125. #define PHONE_REC_START            _IO  ('q', 0x8A)
  126. #define PHONE_REC_STOP            _IO  ('q', 0x8B)
  127. #define PHONE_REC_DEPTH            _IOW ('q', 0x8C, int)
  128. #define PHONE_FRAME            _IOW ('q', 0x8D, int)
  129. #define PHONE_REC_VOLUME        _IOW ('q', 0x8E, int)
  130. #define PHONE_REC_VOLUME_LINEAR        _IOW ('q', 0xDB, int)
  131. #define PHONE_REC_LEVEL            _IO  ('q', 0x8F)
  132.  
  133. #define PHONE_PLAY_CODEC        _IOW ('q', 0x90, int)
  134. #define PHONE_PLAY_START        _IO  ('q', 0x91)
  135. #define PHONE_PLAY_STOP            _IO  ('q', 0x92)
  136. #define PHONE_PLAY_DEPTH        _IOW ('q', 0x93, int)
  137. #define PHONE_PLAY_VOLUME        _IOW ('q', 0x94, int)
  138. #define PHONE_PLAY_VOLUME_LINEAR    _IOW ('q', 0xDC, int)
  139. #define PHONE_PLAY_LEVEL        _IO  ('q', 0x95)
  140. #define PHONE_DTMF_READY        _IOR ('q', 0x96, int)
  141. #define PHONE_GET_DTMF            _IOR ('q', 0x97, int)
  142. #define PHONE_GET_DTMF_ASCII        _IOR ('q', 0x98, int)
  143. #define PHONE_DTMF_OOB            _IOW ('q', 0x99, int)
  144. #define PHONE_EXCEPTION            _IOR ('q', 0x9A, int)
  145. #define PHONE_PLAY_TONE            _IOW ('q', 0x9B, char)
  146. #define PHONE_SET_TONE_ON_TIME        _IOW ('q', 0x9C, int)
  147. #define PHONE_SET_TONE_OFF_TIME        _IOW ('q', 0x9D, int)
  148. #define PHONE_GET_TONE_ON_TIME        _IO  ('q', 0x9E)
  149. #define PHONE_GET_TONE_OFF_TIME        _IO  ('q', 0x9F)
  150. #define PHONE_GET_TONE_STATE        _IO  ('q', 0xA0)
  151. #define PHONE_BUSY            _IO  ('q', 0xA1)
  152. #define PHONE_RINGBACK            _IO  ('q', 0xA2)
  153. #define PHONE_DIALTONE            _IO  ('q', 0xA3)
  154. #define PHONE_CPT_STOP            _IO  ('q', 0xA4)
  155.  
  156. #define PHONE_PSTN_SET_STATE        _IOW ('q', 0xA4, int)
  157. #define PHONE_PSTN_GET_STATE        _IO  ('q', 0xA5)
  158.  
  159. #define PSTN_ON_HOOK        0
  160. #define PSTN_RINGING        1
  161. #define PSTN_OFF_HOOK        2
  162. #define PSTN_PULSE_DIAL        3
  163.  
  164. /******************************************************************************
  165. * The wink duration is tunable with this ioctl.  The default wink duration  
  166. * is 320ms.  You do not need to use this ioctl if you do not require a
  167. * different wink duration.
  168. ******************************************************************************/
  169. #define PHONE_WINK_DURATION        _IOW ('q', 0xA6, int)
  170. #define PHONE_WINK            _IOW ('q', 0xAA, int)
  171.  
  172. /******************************************************************************
  173. *  Codec Definitions
  174. ******************************************************************************/
  175. typedef enum {
  176.     G723_63 = 1,
  177.     G723_53 = 2,
  178.     TS85 = 3,
  179.     TS48 = 4,
  180.     TS41 = 5,
  181.     G728 = 6,
  182.     G729 = 7,
  183.     ULAW = 8,
  184.     ALAW = 9,
  185.     LINEAR16 = 10,
  186.     LINEAR8 = 11,
  187.     WSS = 12,
  188.     G729B = 13
  189. } phone_codec;
  190.  
  191. struct phone_codec_data
  192. {
  193.         phone_codec type;
  194.         unsigned short buf_min, buf_opt, buf_max;
  195. };
  196.  
  197. #define PHONE_QUERY_CODEC               _IOWR ('q', 0xA7, struct phone_codec_data *)
  198. #define PHONE_PSTN_LINETEST             _IO ('q', 0xA8)
  199.  
  200. /******************************************************************************
  201. * This controls the VAD/CNG functionality of G.723.1.  The driver will
  202. * always pass full size frames, any unused bytes will be padded with zeros,
  203. * and frames passed to the driver should also be padded with zeros.  The
  204. * frame type is encoded in the least significant two bits of the first
  205. * WORD of the frame as follows:
  206. *
  207. * bits 1-0    Frame Type    Data Rate        Significant Words
  208. * 00        0        G.723.1 6.3        12
  209. * 01        1        G.723.1 5.3        10
  210. * 10        2        VAD/CNG             2
  211. * 11        3        Repeat last CNG         2 bits
  212. ******************************************************************************/
  213. #define PHONE_VAD            _IOW ('q', 0xA9, int)
  214.  
  215.  
  216. /******************************************************************************
  217. *
  218. * The exception structure allows us to multiplex multiple events onto the
  219. * select() exception set.  If any of these flags are set select() will
  220. * return with a positive indication on the exception set.  The dtmf_ready
  221. * bit indicates if there is data waiting in the DTMF buffer.  The
  222. * hookstate bit is set if there is a change in hookstate status, it does not
  223. * indicate the current state of the hookswitch.  The pstn_ring bit
  224. * indicates that the DAA on a LineJACK card has detected ring voltage on
  225. * the PSTN port.  The caller_id bit indicates that caller_id data has been
  226. * received and is available.  The pstn_wink bit indicates that the DAA on
  227. * the LineJACK has received a wink from the telco switch.  The f0, f1, f2
  228. * and f3 bits indicate that the filter has been triggered by detecting the
  229. * frequency programmed into that filter.
  230. *
  231. * The remaining bits should be set to zero. They will become defined over time
  232. * for other interface cards and their needs.
  233. *
  234. ******************************************************************************/
  235. struct phone_except
  236. {
  237.     unsigned int dtmf_ready:1;
  238.     unsigned int hookstate:1;
  239.     unsigned int pstn_ring:1;
  240.     unsigned int caller_id:1;
  241.     unsigned int pstn_wink:1;
  242.     unsigned int f0:1;
  243.     unsigned int f1:1;
  244.     unsigned int f2:1;
  245.     unsigned int f3:1;
  246.     unsigned int flash:1;
  247.     unsigned int fc0:1;
  248.     unsigned int fc1:1;
  249.     unsigned int fc2:1;
  250.     unsigned int fc3:1;
  251.     unsigned int reserved:18;
  252. };
  253.  
  254. union telephony_exception {
  255.     struct phone_except bits;
  256.     unsigned int bytes;
  257. };
  258.  
  259.  
  260. #endif        /* TELEPHONY_H */
  261.  
  262.